AnimationPlayer でJumpPadのアニメーションを制御
準備
1. Itemsフォルダを作る
2. JumpPad sceneを、Area2Dで作る
3. AnimatedSpriteを追加
4. 新規アニメーション > SpriteFrames
バネの画像を追加
default : 普通 と in を 1.5fps
boost in と out を2.5fps
5. AnimatedSprite > Playingを trueにしておく
Playingはどっちかって言うと、エディタ上で動作確認するためのチェック
実行時に影響あるかはわからない(Autoplayはある)
6. CallisionShapeを追加 > Reactangle
バネを包んでおく
できたら、JumpPad.tscnを保存
Area2D の on_entered_body()シグナルを接続
JumpPadにスクリプトをアタッチして、シグナルを接続しておく
処理は後で書く
AnimationPlayer
キーフレームアニメーションを再生するオブジェクト
(AudioStreamPlayerと似たような感じ)
キーフレームで操作できる値は、GodotのNodeのプロパティならだいたいなんでもOK
AnimationPlayerと、Trackを作る
まずはAnimationPlayer Nodeを作り、
そこで再生するキーフレームアニメーションも作る
1. Add > AnimationPlayer
2. 下の方にキーフレームのタイムラインが出るので、 Animation > New
名前はboostにしておく
3. Add Track > property track > AnimatedSprite.animation
プロパティトラックは、あるオブジェクトのプロパティ値を操作する
boostアニメーション
単に、AnimatedSprite のboost, defaultを play()メソッドで再生しても
ぎこちない遷移になる。
property track で AnimatedSprite.animation を切り替えたほうが制御しやすい
あとから、関数の呼び出しを特定キーフレームで行うのもやりやすい
ということで、propertyを変化させるキーフレームアニメを作る
https://gyazo.com/784aca870cff32eadfa056c3e34bb4f2
boost アニメーション
(SpriteFrameではなく、Animationオブジェクト)
キーフレーム
0 : boost
1.5 : boost
2.0 : default
boostを再生したあと、defaultに戻るアニメーション(1ショット)
操作
cmd + 左右 : ステップ移動
右クリ > insert key
◇ クリック > インスペクタ > そのフレームにおけるプロパティを決定
◇ クリック + cmd + del > キーフレーム削除
on_body_entered()でAnimationPlayer.play()
シグナルが起こったら、作成したアニメーションを再生
code: JumpPad.py
extends Area2D
func _on_JumpPad_body_entered(body):
if body.has_method("boost"):
$AnimationPlayer.play("boost")
body.boost()
code: Player.py
export var boost_multipliyer = 1.5
func boost():
position.y -= 10
yield(get_tree(), "idle_frame")
motion.y -= JUMP_SPEED * boost_multipliyer
Items Layerを作って、PlayerとJumpPadのCollisionから
衝突できるようにチェックを入れておく